package com.xuetang9.fujian.donamicproxy.automachine;

import java.lang.reflect.Proxy;

/**
 * @author: fujian
 * @description: 新增一个接口，使用同一个拦截器处理多个接口
 * @date: 2021/5/1 10:53
 * @version: V1.0
 * @package: com.xuetang9.fujian.donamicproxy.automachine
 **/
public class AutoMachine {
    public static void main(String[] args) {
//        真正做事情的对象
        IVendingMachine machine = new LuckVedingMachine();
//        使用反射包中的代理类创建动态代理
//        IVendingMachine proxyVM = (IVendingMachine) Proxy.newProxyInstance(
//                machine.getClass().getClassLoader(),
//                new Class<?>[]{IVendingMachine.class},
//                new VMInvocationHandler(machine)
//        );
        IVendingMachine proxyVM = (IVendingMachine) new VMInvocationHandler().bind(machine);
        if (proxyVM.transaction(500)){
            proxyVM.shipment();
        }else {
            System.out.println("暂无商品");
        }

//        实例化真正做事情的对象
        IScanCode scanCode = new WechatScan();
//        使用动态代理创建代理对象
        IScanCode proxyScan = (IScanCode) new VMInvocationHandler().bind(scanCode);
        System.out.println(proxyScan.scan());
    }
}
